package repo

import (
	"context"

	"algo-sdk-go/project/matchmaking/adapter/dal"
	"algo-sdk-go/project/matchmaking/domain/models/entity"
	"algo-sdk-go/project/matchmaking/domain/port/repo/ops"

	"github.com/google/wire"
)

var MatePreferenceRepoSet = wire.NewSet(
	dal.NewMatePreferenceRepository,
	wire.Bind(new(MatePreferenceRepo), new(*dal.MatePreferenceDal)),
)

type MatePreferenceRepo interface {
	Save(context.Context, *entity.MatePreference) (userNum int, err error)
	Modify(context.Context, *entity.MatePreference) (err error)

	LoadMatePreferenceByUserNums(ctx context.Context, userNumList []int) ([]entity.MatePreference, error)
	LoadMatePreferenceByCondition(context.Context, ops.Condition) ([]entity.MatePreference, error)
}
